import taichi as ti

ti.init(arch=ti.cuda, debug=True)

enable_projection = False

x = ti.field(ti.f32, shape=10)


#GPU中分支语句耗时过多可以使用静态指定来跳过false的语句
@ti.kernel
def static():
    if ti.static(enable_projection):
        x[0] = 1


#当被遍历者无需并行则使用static拆开成为串行
@ti.kernel
def foo():
    for i in ti.static(range(4)):
        print(i)


#得到一个长度为8的向量，内部每个单元都是三维的向量
#那么在得到某个单元之后 要对内部的某一维值读取则无法直接使用索引
#需要首先static将三维向量拍平 然后才能序号索引
x = ti.Vector.field(3,ti.f32, shape=(8))
@ti.kernel
def reset():
    for i in x:
        for j in ti.static(range(x.n)):
            x[i][j] = 0

 


